package abs.web.jsf;

import abs.dao.ClientesDAO;
import abs.dao.CompaniasDAO;
import abs.dao.GrupoClientesDAO;

import abs.domain.Clientes;
import abs.domain.Companias;
import abs.domain.GrupoClientes;

import abs.service.GrupoClientesService;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.context.annotation.Scope;

import org.springframework.stereotype.Component;

import org.springframework.transaction.annotation.Transactional;

/**
 * Spring Component that handles CRUD requests for GrupoClientes entities
 * 
 */
@Scope("session")
@Component("GrupoClientesComponent")
public class GrupoClientesComponentImpl implements GrupoClientesComponent {

	/**
	 * Data type variable that provides CRUD operations for GrupoClientes entities
	 * 
	 */
	private GrupoClientes grupoclientes;

	/**
	 * DAO injected by Spring that manages Companias entities
	 * 
	 */
	private Companias companias;

	/**
	 * DAO injected by Spring that manages Clientes entities
	 * 
	 */
	private Clientes clienteses;

	/**
	 * DAO injected by Spring that manages Clientes entities
	 * 
	 */
	@Autowired
	private ClientesDAO clientesDAO;

	/**
	 * DAO injected by Spring that manages Companias entities
	 * 
	 */
	@Autowired
	private CompaniasDAO companiasDAO;

	/**
	 * DAO injected by Spring that manages GrupoClientes entities
	 * 
	 */
	@Autowired
	private GrupoClientesDAO grupoClientesDAO;

	/**
	 * Service injected by Spring that provides CRUD operations for GrupoClientes entities
	 * 
	 */
	@Autowired
	private GrupoClientesService grupoClientesService;

	/** 
	 */
	public GrupoClientesComponentImpl() {
	}

	/**
	 * Delete an existing Companias entity
	 * 
	 */
	@Transactional
	public String deleteGrupoClientesCompanias(String grupoclientes_grpcl100cdgo, String related_companias_co000nocia) {
		grupoclientes = grupoClientesService.deleteGrupoClientesCompanias(grupoclientes_grpcl100cdgo, related_companias_co000nocia);

		return "/jsf/grupoclientes/viewGrupoClientes.xhtml";
	}

	/**
	 * Select the child Companias entity for display allowing the user to confirm that they would like to delete the entity
	 * 
	 */
	@Transactional
	public String confirmDeleteGrupoClientesCompanias(String grupoclientes_grpcl100cdgo, String related_companias_co000nocia) {
		companias = companiasDAO.findCompaniasByPrimaryKey(related_companias_co000nocia);

		return "/jsf/grupoclientes/companias/deleteCompanias.xhtml";
	}

	/**
	 * View an existing Companias entity
	 * 
	 */
	@Transactional
	public String selectGrupoClientesCompanias(String grupoclientes_grpcl100cdgo, String related_companias_co000nocia) {
		companias = companiasDAO.findCompaniasByPrimaryKey(related_companias_co000nocia, -1, -1);
		return "/jsf/grupoclientes/companias/viewCompanias.xhtml";
	}

	/**
	 * Save an existing GrupoClientes entity
	 * 
	 */
	@Transactional
	public String saveGrupoClientes(GrupoClientes grupoclientes) {
		grupoClientesService.saveGrupoClientes(grupoclientes);
		return "/jsf/grupoclientes/listGrupoClientess.xhtml";
	}

	/**
	 * Delete an existing Clientes entity
	 * 
	 */
	@Transactional
	public String deleteGrupoClientesClienteses(String grupoclientes_grpcl100cdgo, Integer related_clienteses_cl100cocl) {
		grupoclientes = grupoClientesService.deleteGrupoClientesClienteses(grupoclientes_grpcl100cdgo, related_clienteses_cl100cocl);

		return "/jsf/grupoclientes/viewGrupoClientes.xhtml";
	}

	/**
	 * Save an existing Clientes entity
	 * 
	 */
	@Transactional
	public String saveGrupoClientesClienteses(String grupoclientes_grpcl100cdgo, Clientes clientes) {
		grupoclientes = grupoClientesService.saveGrupoClientesClienteses(grupoclientes_grpcl100cdgo, clientes);

		return "/jsf/grupoclientes/viewGrupoClientes.xhtml";
	}

	/**
	 * Create a new GrupoClientes entity
	 * 
	 */
	@Transactional
	public String newGrupoClientes() {
		grupoclientes = new GrupoClientes();

		return "/jsf/grupoclientes/createGrupoClientes.xhtml";
	}

	/**
	 * Show all Clientes entities by GrupoClientes
	 * 
	 */
	@Transactional
	public List<Clientes> listGrupoClientesClienteses(String grpcl100cdgoKey) {
		return new java.util.ArrayList<Clientes>(grupoClientesDAO.findGrupoClientesByPrimaryKey(grpcl100cdgoKey).getClienteses());
	}

	/**
	 * Edit an existing Clientes entity
	 * 
	 */
	@Transactional
	public String editGrupoClientesClienteses(String grupoclientes_grpcl100cdgo, Integer related_clienteses_cl100cocl) {
		clienteses = clientesDAO.findClientesByPrimaryKey(related_clienteses_cl100cocl, -1, -1);
		return "/jsf/grupoclientes/clienteses/editClienteses.xhtml";
	}

	/**
	 * Edit an existing GrupoClientes entity
	 * 
	 */
	@Transactional
	public String editGrupoClientes(String grpcl100cdgoKey) {
		grupoclientes = grupoClientesDAO.findGrupoClientesByPrimaryKey(grpcl100cdgoKey);

		return "/jsf/grupoclientes/editGrupoClientes.xhtml";
	}

	/**
	 * Create a new Clientes entity
	 * 
	 */
	@Transactional
	public String newGrupoClientesClienteses(String grupoclientes_grpcl100cdgo) {
		clienteses = new Clientes();

		return "/jsf/grupoclientes/clienteses/createClienteses.xhtml";
	}

	/**
	 * Show all GrupoClientes entities
	 * 
	 */
	@Transactional
	public List<GrupoClientes> listGrupoClientess() {
		return new java.util.ArrayList<GrupoClientes>(grupoClientesService.loadGrupoClientess());
	}

	/**
	 * Select the GrupoClientes entity for display allowing the user to confirm that they would like to delete the entity
	 * 
	 */
	@Transactional
	public String confirmDeleteGrupoClientes(String grpcl100cdgoKey) {
		grupoclientes = grupoClientesDAO.findGrupoClientesByPrimaryKey(grpcl100cdgoKey);

		return "/jsf/grupoclientes/deleteGrupoClientes.xhtml";
	}

	/**
	 * Edit an existing Companias entity
	 * 
	 */
	@Transactional
	public String editGrupoClientesCompanias(String grupoclientes_grpcl100cdgo, String related_companias_co000nocia) {
		companias = companiasDAO.findCompaniasByPrimaryKey(related_companias_co000nocia, -1, -1);
		return "/jsf/grupoclientes/companias/editCompanias.xhtml";
	}

	/**
	 * Getter for variable GrupoClientes
	 * 
	 */
	@Transactional
	public GrupoClientes getGrupoclientes() {
		return grupoclientes;
	}

	/**
	 * Create a new Companias entity
	 * 
	 */
	@Transactional
	public String newGrupoClientesCompanias(String grupoclientes_grpcl100cdgo) {
		companias = new Companias();

		return "/jsf/grupoclientes/companias/createCompanias.xhtml";
	}

	/**
	 * Delete an existing GrupoClientes entity
	 * 
	 */
	@Transactional
	public String deleteGrupoClientes(String grpcl100cdgoKey) {
		GrupoClientes grupoclientes = grupoClientesDAO.findGrupoClientesByPrimaryKey(grpcl100cdgoKey);
		grupoClientesService.deleteGrupoClientes(grupoclientes);
		return "/jsf/grupoclientes/listGrupoClientess.xhtml";
	}

	/**
	 * View an existing Clientes entity
	 * 
	 */
	@Transactional
	public String selectGrupoClientesClienteses(String grupoclientes_grpcl100cdgo, Integer related_clienteses_cl100cocl) {
		clienteses = clientesDAO.findClientesByPrimaryKey(related_clienteses_cl100cocl, -1, -1);
		return "/jsf/grupoclientes/clienteses/viewClienteses.xhtml";
	}

	/**
	 * Select an existing GrupoClientes entity
	 * 
	 */
	@Transactional
	public String selectGrupoClientes(String grpcl100cdgoKey) {
		grupoclientes = grupoClientesDAO.findGrupoClientesByPrimaryKey(grpcl100cdgoKey);

		return "/jsf/grupoclientes/viewGrupoClientes.xhtml";
	}

	/**
	 * Getter for variable GrupoClientes
	 * 
	 */
	@Transactional
	public Clientes getClienteses() {
		return clienteses;
	}

	/**
	 * Select the child Clientes entity for display allowing the user to confirm that they would like to delete the entity
	 * 
	 */
	@Transactional
	public String confirmDeleteGrupoClientesClienteses(String grupoclientes_grpcl100cdgo, Integer related_clienteses_cl100cocl) {
		clienteses = clientesDAO.findClientesByPrimaryKey(related_clienteses_cl100cocl);

		return "/jsf/grupoclientes/clienteses/deleteClienteses.xhtml";
	}

	/**
	 * Getter for variable GrupoClientes
	 * 
	 */
	@Transactional
	public Companias getCompanias() {
		return companias;
	}

	/**
	 * Save an existing Companias entity
	 * 
	 */
	@Transactional
	public String saveGrupoClientesCompanias(String grupoclientes_grpcl100cdgo, Companias companias) {
		grupoclientes = grupoClientesService.saveGrupoClientesCompanias(grupoclientes_grpcl100cdgo, companias);

		return "/jsf/grupoclientes/viewGrupoClientes.xhtml";
	}

	/**
	 * Get Companias entity by GrupoClientes
	 * 
	 */
	@Transactional
	public Companias getGrupoClientesCompanias(String grpcl100cdgoKey) {
		return grupoClientesDAO.findGrupoClientesByPrimaryKey(grpcl100cdgoKey).getCompanias();
	}

}
